package com.weiqiao.mall.repository;

import com.weiqiao.base.dao.IBaseMongoDao;
import com.weiqiao.mall.domain.AppUserEntity;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface IAppUserRepository extends IBaseMongoDao {
    /**
     * 巢乐购app注册添加用户
     *
     * @param entity		用户实体
     * @param company_id	公司id
     * @return bool
     */
     boolean addUserEntity(AppUserEntity entity, int company_id);

    /**
     * 更新内容
     * @param company_id 公司id
     * @param filter 查询条阿金
     * @param doc 更新内容
     * @param isAdd 没查到内容是否做新增
     * @return
     */
     boolean updateEntity(int company_id, Bson filter, Document doc, boolean isAdd);

    /**
     * 通过条件查询
     *
     * @param filter		查询条件
     * @param company_id	公司id
     * @return str
     */
     String getAppUserByFilter(Bson filter, int company_id);

    /**
     *通过条件修改用户
     *
     * @param doc			修改内容
     * @param filter		查询条件
     * @param company_id	公司id
     * @return bool
     */
     boolean updateAppUser(Document doc, Bson filter, int company_id);

    /**
     * 通过条件获取用户列表
     *
     * @param filter		查询条件
     * @param company_id	公司id
     * @return list
     */
     List<String> getAppUserListByUserId(Bson filter, int company_id);

     List<String> getAppUserListByUserId(Bson filter, int company_id, Bson sort);

    /**
     * 分页获取用户并排序
     *
     * @param filter		查询条件
     * @param sort			排序
     * @param skip			页数
     * @param limit			行数
     * @param company_id	公司id
     * @return list
     */
     List<String> getAppUserByFilterSortSkipLimit(Bson filter, Bson sort, int skip, int limit, int company_id);

    /**
     * 查询满足条件的个数
     * @param filter    查询条件
     * @return int
     */
     int countFruiter(int company_id, Bson filter);

    /**
     * 根据Filter 查找替换
     * @param companyid
     * @param filters
     * @param doc
     * @return
     */
     boolean findOneAndUpate(int companyid, Bson filters, Document doc);

     boolean updateManyByIds(Document doc, Bson filter, int company_id);

    /**
     * 更新多条内容
     * @param doc
     * @param filter
     * @param company_id
     * @return
     */
     boolean updateMany(Document doc, Bson filter, int company_id);

     void updateOne(int company_id, Bson filter, String s);

    /**
     * 根据user_id 删除用户
     *
     * @param companyid
     * @param user_id
     * @return
     */
     boolean deleteOne(int companyid, int user_id);

    /**
     * 根据条件查询多条客户信息,做排序
     *
     * @param company_id
     * @param filter
     * @param pageable
     * @return
     */
    List<String> getUserPage(int company_id, Bson filter, Pageable pageable);

    /**
     *通过条件修改用户
     *
     * @param json			修改内容
     * @param filter		查询条件
     * @param company_id	公司id
     * @return bool
     */
    boolean updateAppUser(String json, Bson filter, int company_id);

    /**
     * 获取集合并且指定输出
     * @param companyId 公司id
     * @param filter 查询条件
     * @param project 指定输出内容
     * @return
     */
    List<AppUserEntity> getListAndProject(int companyId, Bson filter, Document project);
}
